// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
}
}
+// spawnApp:
+// @argv: an argv array
+//
+// Runs @argv as if it was an application, handling startup notification
+function spawnApp(argv) {
+ try {
+ let app = Gio.AppInfo.create_from_commandline(argv.join(' '), null,
+ Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
+
+ let context = global.create_app_launch_context();
+ app.launch([], context);
+ } catch(err) {
+ _handleSpawnError(argv[0], err);
+ }
+}
+
// trySpawn:
// @argv: an argv array
//
}
}
+function createSettingsAction(label, device) {
+ let item = new PopupMenu.PopupMenuItem(label);
+
+ item.connect('activate', function() {
+ Util.spawnApp(['gnome-control-center', 'network', 'show-device',
+ device.get_path()]);
+ });
+
+ return item;
+}
+
const NMConnectionItem = new Lang.Class({
Name: 'NMConnectionItem',
this._settings = settings;
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
- this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
this._activeConnectionChangedId = this._device.connect('notify::active-connection', Lang.bind(this, this._activeConnectionChanged));
_init: function(client, device, settings) {
this.parent(client, device, settings);
+
+ this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
+
this._mobileDevice = null;
let capabilities = device.current_capabilities;
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
+ _init: function(client, device, settings) {
+ this.parent(client, device, settings);
+
+ this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
+ },
+
_autoConnect: function() {
// FIXME: DUN devices are configured like modems, so
// We need to spawn the mobile wizard
this._toggleItem.connect('activate', Lang.bind(this, this._toggleWifi));
this.item.menu.addMenuItem(this._toggleItem);
- this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
+ this.item.menu.addMenuItem(createSettingsAction(_("Wi-Fi Settings"), device));
this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled', Lang.bind(this, this._sync));
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync));